package com.kjlink.widget.monitoring.config;

import lombok.Getter;
import lombok.Setter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;

import javax.annotation.PostConstruct;

/**
 * 描述:
 * 监控的一些配置参数
 *
 * @author Vic.xu
 * @since 2025-08-08 16:30
 */
@Configuration
@Getter
@Setter
public class MonitorConfigParams {


    /**
     * 监控事件有效期(过期时间)，单位分钟
     * 默认60分钟
     */
    public static final String EVENT_EXPIRE_MINUTES = "${monitor.event.expire-minutes:60}";
    /**
     * 事件合并窗口: 同一个事件类型, 同一个时间窗口内 事件，会被合并到一个批次中
     * 默认 3 分钟
     */
    public static final String BATCH_WINDOW_MINUTES = "${monitor.batch.window.minutes:3}";


    /**
     * 定时从Redis消费事件并写入本地数据库 的执行间隔
     * 默认 1 分钟
     */
    public static final String CONSUME_EVENT_INTERVAL = "${monitor.task.consumer.interval:1}";


    /**
     * 标记过期的事件 定时任务 的执行间隔
     * 默认 60 分钟
     */
    public static final String EXPIRED_EVENT_TASK_INTERVAL = "${monitor.task.expired.interval:60}";

    /**
     * 批次上送任务 定时任务 的执行间隔
     * 默认 5 分钟
     */
    public static final String SEND_EVENT_TASK_INTERVAL = "${monitor.task.send.interval:5}";
    private static final Logger log = LoggerFactory.getLogger(MonitorConfigParams.class);


    @Value(EVENT_EXPIRE_MINUTES)
    private int expireMinutes;

    @Value(BATCH_WINDOW_MINUTES)
    private int batchWindowMinutes;

    @Value(SEND_EVENT_TASK_INTERVAL)
    private int sendEventTaskInterval;


    @PostConstruct
    public void init() {
      log.info("MonitorConfigParams init");
      log.info("MonitorConfigParams.expireMinutes:{}", expireMinutes);
      log.info("MonitorConfigParams.batchWindowMinutes:{}", batchWindowMinutes);
    }

}
